﻿/*********************************************************
 * 开发人员：小兵
 * 创建时间：2012-10-9 10:10:47
 * 描述说明：
 * 
 * 更改历史：
 * 
 * *******************************************************/
namespace Mozlite.Data.SqlServer
{
    using System;
    using System.Web;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Mozlite.Data.Components.Installer;

    /// <summary>
    /// SQL Server数据库安装类。
    /// </summary>
    public class SqlServerInstaller : BaseInstaller<SqlServerHelper>
    {
        private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version1_1;

        private static readonly VersionSpecification[] versionSpecs = new VersionSpecification[] {
                    new VersionSpecification("SELECT id FROM sysobjects", DatabaseVersion.None) };


        /// <summary>
        /// 判断当前数据库是否为可更新数据库。
        /// </summary>
        /// <value>
        /// 如果可以更新数据库返回<c>true</c>，否则返回<c>false</c>。
        /// </value>
        /// <remarks>空数据库不能更新，只能安装。</remarks>
        public override bool CanUpgrade
        {
            get
            {
                return false;
            }
        }

        /// <summary>
        /// 版本唯一识别辅助方法。
        /// </summary>
        protected override VersionSpecification[] VersionSpecs
        {
            get { return versionSpecs; }
        }
        /// <summary>
        /// 初始化类<see cref="SqlServerInstaller"/>。
        /// </summary>
        /// <param name="sqlHelper">数据库辅助接口实例对象。</param>
        public SqlServerInstaller(SqlServerHelper sqlHelper)
            : base(sqlHelper, LatestVersionSupported)
        { }

        /// <summary>
        /// 获取全新安装脚本字符串。
        /// </summary>
        protected override string FullInstallSql
        {
            get { return SqlResources.Full; }
        }

        /// <summary>
        /// 获取更新脚本字符串。
        /// </summary>
        protected override string UpgradeSql
        {
            get
            {
                string upgradeFile = string.Format("{0}_Upgrade", CurrentVersion.ToString());
                return SqlResources.ResourceManager.GetString(upgradeFile);
            }
        }
    }
}
